From b1e5ad469c753ea3eed967056ca814ecb0117c7b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jonas=20=C3=85dahl?= Date: Wed, 29 Apr 2015 15:08:44 +0800 Subject: [PATCH] GtkWindow: Get the correct shadow width even before window is realized The window state 'client_decorated' will only be set the window is being realized. If anyone tries to get the shadow size before that it'd get the with as if there always was no shadow. This avoids negative sized opaque regions caused by the allocation being smaller than shadow. https://bugzilla.gnome.org/show_bug.cgi?id=748615 --- gtk/gtkwindow.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 5a57b775f5..2a85f1f245 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -6529,7 +6529,8 @@ static void get_shadow_width (GtkWidget *widget, GtkBorder *shadow_width) { - GtkWindowPrivate *priv = GTK_WINDOW (widget)->priv; + GtkWindow *window = GTK_WINDOW (widget); + GtkWindowPrivate *priv = window->priv; GtkBorder border = { 0 }; GtkBorder d = { 0 }; GtkBorder margin; @@ -6541,7 +6542,8 @@ get_shadow_width (GtkWidget *widget, *shadow_width = border; if (!priv->decorated || - !priv->client_decorated) + !gtk_window_should_use_csd (window) || + !gtk_window_supports_client_shadow (window)) return; if (priv->maximized || -- 2.30.2